package com.awg.studyplan.excel.exp2read.poi;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * POI方式创建低版本的Excel文件（在实际开发过程中无法预知用户所安装的Office版本的高低，为了保持程序的兼容性，常常使用HSSF），
 * HSSF，兼容低版本的Office97 ～ 2003，以*.xls结尾；
 * XSSF，兼容高版本的Office，即Office2007及以后的，以*.xlsx结尾
 * 
 * @author AWG
 * @date 2020-02-14
 * @version 1.0
 */
public class POIExpExcel {

    public static void main(String[] args) {
        /**
         * 定义表头，表头名称使用数组存放
         */
        String[] title = { "学号", "姓名", "性别" };
        /**
         * 创建Excel工作簿
         */
        HSSFWorkbook workbook = new HSSFWorkbook();
        /**
         * 创建工作表Sheet
         */
        HSSFSheet sheet = workbook.createSheet();
        /**
         * 创建工作表的第一行（即表头），值为0
         */
        HSSFRow headRow = sheet.createRow(0);
        /**
         * 添加表头数据
         */
        HSSFCell cell = null;
        for (int i = 0; i < title.length; i++) {
            // 创建单元格
            cell = headRow.createCell(i);
            // 为单元格赋值
            cell.setCellValue(title[i]);
        }
        /**
         * 添加表数据
         */
        for (int bodyRowNum = 1; bodyRowNum <= 20; bodyRowNum++) {
            HSSFRow bodyRow = sheet.createRow(bodyRowNum);
            // 添加【学号】列数据
            cell = bodyRow.createCell(0);
            cell.setCellValue(new String("2000" + bodyRowNum));
            // 添加【姓名】列数据
            cell = bodyRow.createCell(1);
            cell.setCellValue("学生-2-" + bodyRowNum);
            // 添加【性别】列数据
            cell = bodyRow.createCell(2);
            cell.setCellValue((bodyRowNum % 2 == 0 ? "男" : "女"));
        }
        /**
         * 创建一个Excel文件
         */
        File file = new File(System.getProperty("user.home") + File.separatorChar + "Desktop" + File.separatorChar + "poi_exp_excel.xls");
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            file.delete();
        }
        /**
         * 将Excel的内容写入到创建的Excel文件中
         */
        try {
            FileOutputStream fos = FileUtils.openOutputStream(file);
            workbook.write(fos);
            // 关闭流
            fos.close();
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }

}
